package mains;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

import org.hibernate.StaleObjectStateException;

import persi.casosDeUso.CasoDeUso;
import persi.enums.Posicion;
import persi.futbol.habilidad.HabilidadImpl;
import persi.futbol.jugador.Jugador;
import persi.hibernate.Home;

public class Concurrente {
	public static class JugadorThread extends Thread {

		public JugadorThread(String id) {
			super(id);
		}

		@Override
		public void run() {
			new CasoDeUso() {

				@Override
				public void casoDeUso() {
						Home<Jugador> home = new Home<Jugador>(Jugador.class);
						Jugador example = new Jugador("lGassman");
						Jugador leo = home.buscar(example, Jugador.NOMBRE);
						leo.agregarHabilidad(new HabilidadImpl(
								Posicion.Arquero, 5));
						home.actualizar(leo);
				}
			}.ejecutar();

		}

	}

	public static void main(String[] args) throws InterruptedException {
		Integer size = 2;
		ExecutorService executor = Executors.newFixedThreadPool(size);
		executor.awaitTermination(200, TimeUnit.MILLISECONDS);
		for (int i = 0; i < size; i++) {
			executor.execute(new JugadorThread("thread numero "
					+ String.valueOf(i)));
		}
	}
}
